<?php
class Control{

	/**
	 * 视图实例对象
	 * @var view
	 * @access protected
	 */
	protected $smarty = null;

	/**
	 * 当前控制器名称
	 * @var name
	 * @access protected
	 */
	private $name = '';

	/**
	 * 控制器参数
	 * @var config
	 * @access protected
	 */
	protected $config = array();

	/**
	 * 构造函数 取得模板对象实例
	 * @access public
	 */
	public function __construct() {
		//实例化视图类
		if(C('smarty') === true){
			include_once(dirname(__FILE__).'/smarty/Smarty.class.php');
			$this->smarty = new Smarty();
			$this->smarty->template_dir = TEMPLATE_DIR;
			$this->smarty->compile_dir = COMPILE_DIR;
			$this->smarty->left_delimiter = "<{";
	    	$this->smarty->right_delimiter = "}>";
		}
    	$this->multiLanguage();
	}

	/**
	 * 获取当前Action名称
	 * @access protected
	 */
	protected function getActionName() {
		if(empty($this->name)) {
			// 获取Action名称
			$this->name = substr(get_class($this),0,-6);
		}
		return $this->name;
	}


	/**
	 *  创建静态页面
	 * @access protected
	 * @htmlfile 生成的静态文件名称
	 * @htmlpath 生成的静态文件路径
	 * @param string $templateFile 指定要调用的模板文件
	 * 默认为空 由系统自动定位模板文件
	 * @return string
	 */
	protected function buildHtml($htmlfile='',$htmlpath='',$templateFile='') {
		$content = $this->smarty->fetch($templateFile);
		$htmlpath = !empty($htmlpath)?$htmlpath:APP_ROOT;
		$htmlfile =  $htmlpath.$htmlfile;
		if(!is_dir(dirname($htmlfile)))
		// 如果静态目录不存在 则创建
		mkdir(dirname($htmlfile),0777,true);
		if(false === file_put_contents($htmlfile,$content))
		throw_exception('create file failure:'.$htmlfile);
		return $content;
	}
	
	/**
	 * 判断是否支持多语言
	 * 多语言是利用smarty自带的配置文件实现
	 */
	function multiLanguage(){
		if(C('multi_language')){
			$this->smarty->setConfigDir(MYMVC_ROOT.'/config');
			//这个地方以后会根据不同的条件加载不同的语言
			$this->smarty->configLoad('language.conf');
		}
	}
	/**
	 * 模板主题设置
	 * @access protected
	 * @param string $theme 模版主题
	 * @return Action
	 */
	protected function theme($theme){
		return $this;
	}

	/**
	 * Action跳转(URL重定向） 
	 * @access protected
	 * @param string $url 跳转的URL表达式
	 * @param integer $delay 延时跳转的时间 单位为秒
	 * @param string $msg 跳转提示信息
	 * @return void
	 */
	protected function redirect($url,$delay=0,$msg='') {
		redirect($url,$delay,$msg);
	}

	/**
	 * 析构方法
	 * @access public
	 */
	public function __destruct() {

	}
}